package cn.tangshh.universal.core.api;

import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

/**
 * 状态码枚举
 *
 * @author Tang
 * @version v1.0
 */
@Getter
public enum RCode {
    /** 操作成功 */
    SUCCESS(200, "sys.status_code.success"),

    /** 错误请求 */
    BAD_REQUEST(400, "sys.status_code.bad_request"),

    /** 非法访问 */
    UNAUTHORIZED(401, "sys.status_code.unauthorized"),

    /** 没有权限 */
    NOT_PERMISSION(403, "sys.status_code.not_permission"),

    /** 你请求的资源不存在 */
    NOT_FOUND(404, "sys.status_code.not_found"),

    /** 请求方式不支持 */
    METHOD_NOT_SUPPORTED(405, "sys.status_code.method_not_supported"),

    /** 系统错误 */
    FAIL(500, "sys.status_code.error"),

    ;

    @JsonValue
    private final int code;
    private final String message;

    RCode(final int code, final String message) {
        this.code = code;
        this.message = message;
    }

    public static RCode of(int code) {
        RCode[] ecs = RCode.values();
        for (RCode ec : ecs) {
            if (ec.getCode() == code) {
                return ec;
            }
        }
        return SUCCESS;
    }

}
